#ifndef __VBOOSTAPP_H__
#define __VBOOSTAPP_H__
class CVBoostApp : 
    public CBaseUnk<VBoostRoot>
{
public:
    UNKNOWN_IMPL
    static HRESULT CreateInstance(CVBoostApp** ppApp);
    STDMETHOD(HookQI)( 
        /* [in] */ IUnknown __RPC_FAR *pUnk,
        /* [in] */ IQIHook __RPC_FAR *pQIHook,
        /* [in] */ UnkHookFlags uhFlags,
        /* [out] */ UnknownHook __RPC_FAR *__RPC_FAR *ppOwner);
    STDMETHOD(HookQIAR)( 
        /* [in] */ IUnknown __RPC_FAR *pUnk,
        /* [in] */ IQIARHook __RPC_FAR *pQIARHook,
        /* [in] */ UnkHookFlags uhFlags,
        /* [out] */ UnknownHook __RPC_FAR *__RPC_FAR *ppOwner);
    STDMETHOD(SafeUnknown)( 
        /* [in] */ IUnknown __RPC_FAR *pUnknown,
        /* [retval][out] */ /* external definition not present */ IUnknown __RPC_FAR *__RPC_FAR *retVal);
    STDMETHOD(CreateDelegator)( 
        /* [in] */ IUnknown __RPC_FAR *punkOuter,
        /* [in] */ IUnknown __RPC_FAR *punkDelegatee,
        /* [defaultvalue][in] */ VBGUIDPtr pIID,
        /* [defaultvalue][in] */ BlindDelegatorPtr pEmbedded,
        /* [defaultvalue][in] */ long pfnDestroyEmbedded,
        /* [retval][out] */ /* external definition not present */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
    STDMETHOD(AggregateUnknown)( 
        /* [in] */ /* external definition not present */ IUnknown __RPC_FAR *pUnk,
        /* [in] */ SAFEARRAY __RPC_FAR * __RPC_FAR *pData,
        /* [in] */ SAFEARRAY __RPC_FAR * __RPC_FAR *pIIDs,
        /* [out] */ UnknownHook __RPC_FAR *__RPC_FAR *ppOwner);
    STDMETHOD(CreateAggregate)( 
        /* [in] */ SAFEARRAY __RPC_FAR * __RPC_FAR *pData,
        /* [in] */ SAFEARRAY __RPC_FAR * __RPC_FAR *pIIDs,
        /* [defaultvalue][in] */ long pOwner,
        /* [retval][out] */ /* external definition not present */ IUnknown __RPC_FAR *__RPC_FAR *ppvObj);
    STDMETHOD_(void, AssignAddRef)(
            /* [out] */ void __RPC_FAR *pDst,
            /* [in] */ void __RPC_FAR *pSrc);
    STDMETHOD(BlindFunctionPointer)( 
        /* [in] */ long FunctionNumber,
        /* [retval][out] */ long __RPC_FAR *retVal);
    STDMETHOD(CreateFixedSizeMemoryManager)( 
        /* [in] */ long ElementSize,
        /* [in] */ long ElementsPerBlock,
        /* [in] */ VARIANT_BOOL fCompactible,
        /* [retval][out] */ FixedSizeMemoryManager __RPC_FAR *__RPC_FAR *retVal);
    STDMETHOD_(void, Assign)( 
        /* [in] */ void __RPC_FAR *pDst,
        /* [in] */ void __RPC_FAR *pSrc){*(long*)pDst = *(long*)pSrc;}
    
    STDMETHOD_(long, Deref)( 
        /* [in] */ long Ptr){return *(long*)Ptr;}
    
    STDMETHOD_(long, UAdd)( 
        /* [in] */ long x,
        /* [in] */ long y){return (long)((ULONG)x + (ULONG)y);}
    
    STDMETHOD_(long, UDif)( 
        /* [in] */ long x,
        /* [in] */ long y){return (long)((ULONG)x - (ULONG)y);}
    
    STDMETHOD_(VARIANT_BOOL, UGT)( 
        /* [in] */ long x,
        /* [in] */ long y){return ((ULONG)x > (ULONG)y) ? VARIANT_TRUE : VARIANT_FALSE;}
    
    STDMETHOD_(VARIANT_BOOL, UGTE)( 
        /* [in] */ long x,
        /* [in] */ long y){return ((ULONG)x >= (ULONG)y) ? VARIANT_TRUE : VARIANT_FALSE;}

    STDMETHOD_(void, AssignZero)( 
        /* [in] */ void __RPC_FAR *pDst){*(void**)pDst = NULL;}

    STDMETHOD_(void, AssignSwap)( 
        /* [in] */ void __RPC_FAR *pLeft,
        /* [in] */ void __RPC_FAR *pRight);

    STDMETHOD_(void, MoveVariant)( 
        /* [out] */ VARIANT __RPC_FAR *varDst,
        /* [out][in] */ VARIANT __RPC_FAR *varSrc){varDst->decVal = varSrc->decVal; varSrc->vt = VT_EMPTY;}

    STDMETHOD_(long, UDiv)( 
        /* [in] */ long x,
        /* [in] */ long y){return (long)((ULONG)x / (ULONG)y);}
};
class CVBoostAppCF : public CBaseClassFactory
{
    HRESULT Create(IUnknown** ppUnk);
};
#endif //__VBOOSTAPP_H__
